package 算法练习;/**
 * @author： li
 * @date： 2022-03-21 16:00
 * @version 1.0
 */
import java.util.*;
public class 最大的算式 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n=sc.nextInt();
        int k=sc.nextInt();
        int[] s = new int[n+1];
        for(int i=1;i<=n;i++){
            int x =sc.nextInt();
            s[i]=s[i-1]+x;
        }
//子问题 前i个数有j个乘号的最大值
        long[][] res = new long[n+1][k+1];
        for(int i=1;i<=n;i++)
            res[i][0]=s[i];
        for(int i=2;i<=n;i++)
        {
            int t = Math.min(i-1,k);//N个数中最多有k个乘号
            for(int j=1;j<=t;j++)
            {
                for(int kk=2;kk<=i;kk++)//kK表示乘号的位置;
                {
                    res[i][j]=Math.max(res[i][j],res[kk-1][j-1]*(s[i]-s[kk-1]));
                }
            }
        }
        for(int i=1;i<=n;i++){
            for(int j=1;j<=k;j++){
                System.out.print(res[i][j]+" ");
            }
            System.out.println(" ");
        }
        sc.close();
        System.out.println(res[n][k]);
    }
}
